'''
4.0重构了代码,利用循环与函数调用,精简了一半的代码量,更新了字段
'''
import pandas as pd
import os
from datetime import datetime
path_list=["门店","区域","综合大区门店"]
result_path=os.getcwd()+'\\结果\\'
#数据清洗
def lehe_data():
    global df,today,List_Need
    #循环拼接df
    try:
        for i in file:
            DataFrame=pd.read_excel(path+i,header=0)
            df=pd.concat([df,DataFrame])
    except:
        print("未能读取[{}]文件".format(path.replace(os.getcwd(),"")))
    #构建提取表头
    List_Need=["部门","作业人员-在职经纪人","新增房源-二手新增",\
               "新增房源-租赁新增","新增客户-二手客户","新增客户-租赁客户",\
                "新增行程-二手带看","新增行程-租赁带看","二手总房源-公盘",\
                "二手总房源-私盘","租赁总房源-公盘","租赁总房源-私盘"]
    #提取df所需Header,初始化List_AVG列表用于存储平均数,初始化pos位置
    df=df[List_Need]
    List_AVG=[]
    pos=0
    #循环拼接df
    #格式化添加构建人均列表
    for i in range(2,len(List_Need)):
        List_AVG.append(("人均{}".format(List_Need[i])))
    #奇数列新增人均列
    for i in range(3,len(List_Need)*2-1,2):
        df.insert(i,List_AVG[pos]," ", allow_duplicates=False)
        pos=pos+1
    #计算人均值
    for i in range(0,len(List_AVG)):
        df[List_AVG[i]]=df[List_Need[i+2]]/df[List_Need[1]]
    #格式化保留两位小数
    format_2f="{:.02f}".format
    for i in List_AVG:
        df[i]=df[i].apply(format_2f)
        df[i]=df[i].astype(float)
    #丢弃Nan值与总计
    df=df.dropna()
    df=df[~df["部门"].isin(["总计"])]
    #排序
    df.sort_values(by="新增房源-二手新增", inplace=True, ascending=True)
    #日期
    today=(datetime.now()).strftime("%Y.%m.%d.")
#综合大区区域筛选
def SynArea():
    global listSynAREA
    Syn_area_txt=open(os.getcwd()+'\\筛选\\综合大区区域',encoding = "utf-8")
    listSynAREA=list(Syn_area_txt)
    listSynAREA=[x.strip() for x in listSynAREA if x.strip()!='']
    Syn_area_txt.close()
#执行三次程序，切换文件目录
for third in path_list:
    #初始化df
    df=pd.DataFrame()
    #格式化目录
    path=os.getcwd()+"\\{}\\".format(third)
    file=os.listdir(path)
    #执行数据清洗
    lehe_data()
    #输出EXCEL
    save_path=result_path+today+"{}数据.xlsx".format(third)
    df.to_excel(save_path,index=False)
    #筛选综合大区区域
    if third=="区域":
        SynArea()
        df2=df[df["部门"].isin(listSynAREA)].copy()
        save_path=result_path+today+"综合大区数据.xlsx"
        df2.to_excel(save_path,index=False)
print("完成")
